rte_fbk_hash.h(3) | DPDK | rte_fbk_hash.h(3) |
NAME¶
rte_fbk_hash.h
SYNOPSIS¶
#include <stdint.h>
#include <errno.h>
#include <string.h>
#include <rte_hash_crc.h>
#include <rte_jhash.h>
Data Structures¶
struct rte_fbk_hash_params
union rte_fbk_hash_entry
struct rte_fbk_hash_table
Macros¶
#define RTE_FBK_HASH_INIT_VAL_DEFAULT 0xFFFFFFFF
#define RTE_FBK_HASH_ENTRIES_MAX (1 << 20)
#define RTE_FBK_HASH_ENTRIES_PER_BUCKET_MAX 256
#define RTE_FBK_HASH_NAMESIZE 32
Typedefs¶
typedef uint32_t(* rte_fbk_hash_fn) (uint32_t key,
uint32_t init_val)
Functions¶
static uint32_t rte_fbk_hash_get_bucket (const struct
rte_fbk_hash_table *ht, uint32_t key)
static int rte_fbk_hash_add_key_with_bucket (struct
rte_fbk_hash_table *ht, uint32_t key, uint16_t value, uint32_t
bucket)
static int rte_fbk_hash_add_key (struct rte_fbk_hash_table *ht,
uint32_t key, uint16_t value)
static int rte_fbk_hash_delete_key_with_bucket (struct
rte_fbk_hash_table *ht, uint32_t key, uint32_t bucket)
static int rte_fbk_hash_delete_key (struct rte_fbk_hash_table
*ht, uint32_t key)
static int rte_fbk_hash_lookup_with_bucket (const struct
rte_fbk_hash_table *ht, uint32_t key, uint32_t bucket)
static int rte_fbk_hash_lookup (const struct rte_fbk_hash_table
*ht, uint32_t key)
static void rte_fbk_hash_clear_all (struct rte_fbk_hash_table
*ht)
static double rte_fbk_hash_get_load_factor (struct
rte_fbk_hash_table *ht)
struct rte_fbk_hash_table * rte_fbk_hash_find_existing (const
char *name)
struct rte_fbk_hash_table * rte_fbk_hash_create (const struct
rte_fbk_hash_params *params)
void rte_fbk_hash_free (struct rte_fbk_hash_table *ht)
Detailed Description¶
This is a hash table implementation for four byte keys (fbk).
Note that the return value of the add function should always be checked as, if a bucket is full, the key is not added even if there is space in other buckets. This keeps the lookup function very simple and therefore fast.
Definition in file rte_fbk_hash.h.
Macro Definition Documentation¶
#define RTE_FBK_HASH_INIT_VAL_DEFAULT 0xFFFFFFFF¶
Initialising value used when calculating hash.
Definition at line 32 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_ENTRIES_MAX (1 << 20)¶
The maximum number of entries in the hash table that is supported.
Definition at line 36 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_ENTRIES_PER_BUCKET_MAX 256¶
The maximum number of entries in each bucket that is supported.
Definition at line 39 of file rte_fbk_hash.h.
#define RTE_FBK_HASH_NAMESIZE 32¶
Maximum size of string for naming the hash.
Definition at line 42 of file rte_fbk_hash.h.
Typedef Documentation¶
typedef uint32_t(* rte_fbk_hash_fn) (uint32_t key, uint32_t init_val)¶
Type of function that can be used for calculating the hash value.
Definition at line 45 of file rte_fbk_hash.h.
Function Documentation¶
static uint32_t rte_fbk_hash_get_bucket (const struct rte_fbk_hash_table * ht, uint32_t key) [inline], [static]¶
Find the offset into hash table of the bucket containing a particular key.
Parameters
key Key to calculate bucket for.
Returns
Definition at line 94 of file rte_fbk_hash.h.
static int rte_fbk_hash_add_key_with_bucket (struct rte_fbk_hash_table * ht, uint32_t key, uint16_t value, uint32_t bucket) [inline], [static]¶
Add a key to an existing hash table with bucket id. This operation is not multi-thread safe and should only be called from one thread.
Parameters
key Key to add to the hash table.
value Value to associate with key.
bucket Bucket to associate with key.
Returns
Definition at line 117 of file rte_fbk_hash.h.
static int rte_fbk_hash_add_key (struct rte_fbk_hash_table * ht, uint32_t key, uint16_t value) [inline], [static]¶
Add a key to an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters
key Key to add to the hash table.
value Value to associate with key.
Returns
Definition at line 162 of file rte_fbk_hash.h.
static int rte_fbk_hash_delete_key_with_bucket (struct rte_fbk_hash_table * ht, uint32_t key, uint32_t bucket) [inline], [static]¶
Remove a key with a given bucket id from an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters
key Key to remove from the hash table.
bucket Bucket id associate with key.
Returns
Definition at line 184 of file rte_fbk_hash.h.
static int rte_fbk_hash_delete_key (struct rte_fbk_hash_table * ht, uint32_t key) [inline], [static]¶
Remove a key from an existing hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters
key Key to remove from the hash table.
Returns
Definition at line 227 of file rte_fbk_hash.h.
static int rte_fbk_hash_lookup_with_bucket (const struct rte_fbk_hash_table * ht, uint32_t key, uint32_t bucket) [inline], [static]¶
Find a key in the hash table with a given bucketid. This operation is multi-thread safe.
Parameters
key Key to find.
bucket Bucket associate to the key.
Returns
Definition at line 247 of file rte_fbk_hash.h.
static int rte_fbk_hash_lookup (const struct rte_fbk_hash_table * ht, uint32_t key) [inline], [static]¶
Find a key in the hash table. This operation is multi-thread safe.
Parameters
key Key to find.
Returns
Definition at line 277 of file rte_fbk_hash.h.
static void rte_fbk_hash_clear_all (struct rte_fbk_hash_table * ht) [inline], [static]¶
Delete all entries in a hash table. This operation is not multi-thread safe and should only be called from one thread.
Parameters
Definition at line 291 of file rte_fbk_hash.h.
static double rte_fbk_hash_get_load_factor (struct rte_fbk_hash_table * ht) [inline], [static]¶
Find what fraction of entries are being used.
Parameters
Returns
Definition at line 306 of file rte_fbk_hash.h.
struct rte_fbk_hash_table* rte_fbk_hash_find_existing (const char * name)¶
Performs a lookup for an existing hash table, and returns a pointer to the table if found.
Parameters
Returns
- •
- ENOENT - required entry not available to return.
struct rte_fbk_hash_table* rte_fbk_hash_create (const struct rte_fbk_hash_params * params)¶
Create a new hash table for use with four byte keys.
Parameters
Returns
- E_RTE_NO_CONFIG - function could not get pointer to rte_config structure
- E_RTE_SECONDARY - function was called from a secondary process instance
- EINVAL - invalid parameter value passed to function
- ENOSPC - the maximum number of memzones has already been allocated
- EEXIST - a memzone with the same name already exists
- ENOMEM - no appropriate memory area found in which to create memzone
void rte_fbk_hash_free (struct rte_fbk_hash_table * ht)¶
Free all memory used by a hash table. Has no effect on hash tables allocated in memory zones
Parameters
Author¶
Generated automatically by Doxygen for DPDK from the source code.
Fri Dec 15 2023 | Version 23.11.0 |